<?php
/**
 * Copyright (C), 2021-2021, Shall Buy Life info. Co., Ltd.
 * FileName: MicroConstant.php
 * Description: 说明
 *
 * @author lwl
 * @Create Date    2021/9/2 20:55
 * @Update Date    2021/9/2 20:55 By lwl
 * @version v1.0
 */

namespace Example\Constants;


interface MicroConstant
{
    /**
     * FunctionName：getMemberByMemberIds
     * Description：通过 memberIds 获取 member 数据
     * Author：lwl
     * @param array $memberIds 【1，2，3】
     * @param bool $arrayColumn
     * @param string $field
     * @return array
     */
    public static function getMemberByMemberIds(array $memberIds, bool $arrayColumn = true, string $field = 'id'): array;


    /**
     * FunctionName：getMemberHeadPicByMemberIds
     * Description：通过 memberIds 获取 会员 头像
     * Author：lwl
     * @param array $memberIds [1，2，3]
     * @return array
     */
    public static function getMemberHeadPicByMemberIds(array $memberIds): array;

    /**
     * FunctionName：getRoleByRoleId
     * Description：通过roleId 获取 角色详情
     * Author：lwl
     * @param int $roleId
     * @return array
     */
    public static function getRoleByRoleId(int $roleId): array;


    /**
     * FunctionName：getStaffByStaffId
     * Description：通过 staffId 获取 staff 信息
     * Author：lwl
     * @param int $staffId
     * @return array
     */
    public static function getStaffByStaffId(int $staffId): array;


    /**
     * FunctionName：getStoreByMemberId
     * Description：通过 memberId 获取 商户信息
     * Author：lwl
     * @param int $memberId
     * @return array
     */
    public static function getStoreByMemberId(int $memberId): array;


    /**
     * FunctionName：getBusinessRoleList
     * Description：获取业务与对应的角色
     * Author：lwl
     * @return array
     */
    public static function getBusinessRoleList(): array;


    /**
     * FunctionName：getAdSpaceByAdId
     * Description：通过 广告 Id 获取广告详情
     * Author：lwl
     * @param $adId
     * @return array
     */
    public static function getAdSpaceByAdId($adId): array;


    /**
     * FunctionName：saveAd
     * Description：向广告服务提交广告数据
     * Author：lwl
     * @param array $params
     * @return array
     */
    public static function saveAd(array $params): array;


    /**
     * FunctionName：getStoreByUserName
     * Description：通过 userName 查找 商户
     * Author：lwl
     * @param string $userName
     * @return array
     */
    public static function getStoreByUserName(string $userName): array;

    /**
     * FunctionName：getRealNameByMemberId
     * Description：通过 memberId 查询 真实姓名 realName
     * Author：lwl
     * @param int $memberId
     * @return array
     */
    public static function getRealNameByMemberId(int $memberId): array;

    /**
     * FunctionName：getStoreUserByUserId
     * Description： 通过 userId 获取 store服务的user信息
     * Author：lwl
     * @param int $userId
     * @return array
     */
    public static function getStoreUserByUserId(int $userId): array;

    /**
     * FunctionName：getStoreByStoreId
     * Description： 通过 storeId 获取 商户信息
     * Author：lwl
     * @param int $storeId
     * @return array
     */
    public static function getStoreByStoreId(int $storeId):array;

    /**
     * FunctionName：getMemberByPhone
     * Description：通过 phone 获取 会员信息
     * Author：lwl
     * @param string $phone
     * @return array
     */
    public static function getMemberByPhone(string $phone):array;

    /**
     * FunctionName：getStoreListByStoreIds
     * Description：通过 storeIds 获取 storeList
     * Author：lwl
     * @param array $storeIds [1,2,3]
     * @return array
     */
    public static function getStoreListByStoreIds(array $storeIds):array;

    /**
     * FunctionName：getStaffRolesByStaffId
     * Description：通过staffId 获取 员工 角色
     * Author：lwl
     * @param int $staffId 1
     * @return array
     */
    public static function getStaffRolesByStaffId(int $staffId, string $field): array;

    /**
     * FunctionName：createContract
     * Description：创建合同
     * @param array $params
     * @return array
     *
     * @author mdx
     * @date 2021-11-29 7:14 下午
     */
    public static function createContract(array $params): array;

    /**
     * FunctionName：getContractSignDetail
     * Description：根据模板获取签章信息
     * @param array $params
     * @return array
     *
     * @author mdx
     * @date 2021-11-30 9:46 上午
     */
    public static function getContractSignDetail(array $params): array;

    /**
     * FunctionName：contractSign
     * Description：合同签署
     * @param array $params
     * @return array
     *
     * @author mdx
     * @date 2021-12-01 10:57 上午
     */
    public static function contractSign(array $params): array;


    /**
     * FunctionName：getMemberAuthByIds
     * Description：获取用户信息
     * @param array $memberIds
     * @return array
     * @author zmy
     * @date 2021-12-07 20:57
     */
    public static function getMemberAuthByIds(array $memberIds): array;

    /**
     * FunctionName：getContractTemplateById
     * Description：获取合同模板数据
     * @param int $tplId
     * @return array
     *
     * @author mdx
     * @date 2021-12-08 4:56 下午
     */
    public static function getContractTemplateById(int $tplId): array;

    /**
     * FunctionName：getContractInfo
     * Description：获取合同详情
     * @param int $contractId
     * @return array
     *
     * @author mdx
     * @date 2021-12-08 4:57 下午
     */
    public static function getContractInfo(int $contractId): array;

    /**
     * FunctionName：getMemberDetail
     * Description：获取用户信息
     * @param int $memberId
     * @return array
     *
     * @author mdx
     * @date 2021-12-08 4:57 下午
     */
    public static function getMemberDetail(int $memberId): array;

    /**
     * FunctionName：smsCheckCode
     * Description：短信验证
     * @param array $params
     * @return array
     *
     * @author mdx
     * @date 2021-12-10 1:16 下午
     */
    public static function smsCheckCode(array $params): array;

    /**
     * FunctionName：getSeal
     * Description：获取签章信息
     * @param array $params
     * @return array
     *
     * @author mdx
     * @date 2021-12-10 4:39 下午
     */
    public static function getSeal(array $params): array;

    /**
     * FunctionName：cancelContract
     * Description：撤回合同
     * @param array $params
     * @return array
     * @throws \ShallBuy\LaravelBase\Common\Exception\Exceptions\BusinessException
     *
     * @author mdx
     * @date 2021-12-14 2:19 下午
     */
    public static function cancelContract(array $params): array;

    /**
     * FunctionName：addXiaoBaBalance
     * Description：增加小巴余额
     * Author：lwl
     * @param array $params
     * @return array
     */
    public static function addXiaoBaBalance(array $params): array;

    /**
     * FunctionName: addBusiness
     * Description: 添加业务数据
     * Author: lhx
     * @param string $businessName 业务名称
     * @param string $businessAlias 业务别名
     * @return array
     */
    public static function addBusiness(string $businessName, string $businessAlias): array;

    /**
     * FunctionName: getBusinessInfo
     * Description: 查询业务数据
     * Author: lhx
     * @param int $type  1通过id;2通过business_alias查询
     * @param string $value 字段对应的值
     * @return array
     */
    public static function getBusinessInfo(string $value, int $type = 2): array;

    /**
     * FunctionName: addRole
     * Description: 添加角色
     * Author: lhx
     * @param int $businessId 业务ID
     * @param int $roleType 角色类型
     * @param string $roleName 角色名称
     * @return array
     */
    public static function addRole(int $businessId, string $roleName, int $roleType = 1): array;

    /**
     * FunctionName:
     * Description:
     * Author: lhx
     * @param $params
     * @return array
     */
    public static function bitchAddRole($params): array;

    /**
     * FunctionName: getRoleInfoByRoleName
     * Description: 获取角色信息通过角色名称
     * Author: lhx
     * @param string $roleName
     * @param int $businessId
     * @param int $roleType
     * @return array
     */
    public static function getRoleInfoByRoleName(string $roleName, int $businessId, int $roleType = 1): array;

    /**
     * FunctionName: addMemberAssociation
     * Description: 添加会员角色关系
     * Author: lhx
     * @param int $memberId 会员ID
     * @param int $businessId 业务ID
     * @param int $roleId 角色ID
     * @param int $roleType 角色类型
     * @param int $status 状态
     * @return array
     */
    public static function addMemberAssociation(int $memberId, int $businessId, int $roleId, int $roleType = 1, int $status = 1): array;

    /**
     * FunctionName: batchAddMemberAssociation
     * Description: 批量添加会员角色关系
     * Author: lhx
     * @param array $params
     * @return array
     */
    public static function batchAddMemberAssociation(array $params): array;

    /**
     * FunctionName:
     * Description:
     * Author: lhx
     * @param int $memberId 会员ID
     * @param int $businessId 业务ID
     * @param int $roleId 角色ID
     * @param int $roleType 角色类型
     * @param int $type 状态 1-正常；0-屏蔽
     * @return array
     */
    public static function getMemberAssociation(int $memberId, int $businessId, int $roleId, int $roleType = 1, int $type = 1 ): array;

    /**
     * FunctionName:
     * Description:
     * Author: lhx
     * @param int $id ID
     * @param int $memberId 会员ID
     * @param int $businessId 业务ID
     * @param int $roleId 角色ID
     * @param int $roleType 角色类型
     * @param int $status
     * @return array
     */
    public static function updateMemberAssociationById(int $id, int $memberId, int $businessId, int $roleId, int $roleType, int $status ): array;

}
